/*
 * @Description: axios
 * @Author: Yong
 * @Date: 2021-10-04 21:36:27
 * @LastEditTime: 2021-10-04 23:46:07
 */
import axios, { AxiosRequestConfig, AxiosResponse } from 'axios'
import { Toast } from 'antd-mobile'
import { BASE_URL } from './url'

const service = axios.create({
    baseURL: BASE_URL,
    // headers: { },
    timeout: 20000,
    // 处理请求数据
    // transformRequest: [(data) => return data],
    // 校验http状态码
    //validateStatus()
    // 处理响应数据
    // transformResponse: [(data) => return data],
})

// 请求拦截
service.interceptors.request.use((config: AxiosRequestConfig) => {
    // 获取token，并将其添加至请求头中
    return config
}, error => {
    // 错误抛到业务代码
    error.data = {}
    error.data.msg = '服务器异常，请联系管理员！'
    return Promise.resolve(error)
})

// 响应拦截
service.interceptors.response.use((response: AxiosResponse) => {
    return response
}, error => {
    if (axios.isCancel(error)) {
        console.log('repeated request: ' + error.message)
    } else {
        // 错误抛到业务代码
        error.data = {}
        error.data.msg = '请求超时或服务器异常，请检查网络或联系管理员！'
        Toast.show({ icon: 'fail', content: error.data.msg })
    }
    return Promise.reject(error)
})

export default service